<template>
    <H1>B Base-watch - event</H1>
    <div>
        <button @click="changeCount()">changeCount</button>

        <input type="text" v-model="name">
    </div>

    <div>
        !-- 阻止单击事件继续传播 -->
        <a v-on:click.stop="doThis"></a>

        <!-- 提交事件不再重载页面 -->
        <form v-on:submit.prevent="onSubmit"></form>

        <!-- 修饰符可以串联 -->
        <a v-on:click.stop.prevent="doThat"></a>

        <!-- 添加事件监听器时使用事件捕获模式 -->
        <!-- 即内部元素触发的事件先在此处理，然后才交由内部元素进行处理 -->
        <div v-on:click.capture="doThis">...</div>

        <!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
        <!-- 即事件不是从内部元素触发的 -->
        <div v-on:click.self="doThat">...</div>

        <!-- 点击事件将只会触发一次 -->
        <a v-on:click.once="doThis"></a>
    </div>

     <div>
         <button @click="isShow = !isShow">{{!isShow?'显示':'隐藏'}}</button>

         <transition name='fade'>
            <p v-show="isShow">Hello Transition</p>
         </transition>
     </div>
     

<div>
    <br><br><br><br><br><br>
</div>
</template>
<style scoped>

    .fade-enter-active, .fade-leave-active {
      transition: opacity 1s
    }
    .fade-enter, .fade-leave-to {
      opacity: 0
    }

</style>
<script>

export default {
   data() {
       return {
            count : 0   ,
            count2: 1   ,
            name: '方便面',

            product: {
                name: '大块方便面',
                count: 1,
                price: 100
            },

            isShow: true
       }
   },
   watch:{
       count : function(n,o){
           console.log('n -- o',n,o)
       },
       count2(n,o){
           console.log('count2 n -- o',n,o)
       },
       name: {
           handler(n,o){
               console.log('handler--',n,o)
           },
          // 代表在wacth里声明了name这个方法之后立即先去执行一次handler方法
          immediate: true
       },
       product: {
           handler: function(n,o){
               console.log('product handler--',n,o)
           },
           deep: true
       }
   },
   methods:{
       changeCount(){
           this.count+=1;
           this.count2 +=2;
            this.name = this.name + " .";

            // this.product.name = this.product.name + " +1 ";
            // this.product.count +=1;
            this.product = {name:'new方便面'}
       }
   }
}
</script>
